package com.learn.designPatterns.createType.singleton;

/**
 * @classname:
 * @Description: 懒汉式-线程不安全
 * @author: yfpu
 * @Date: 2018-08-21 17:45
 */
public class Singleton1_Lazy {

    /**
     * 以下实现中，私有静态变量unqueInstance 被延迟实例化，这样做的好处是，如果没有用到该类，那么就不会实例化
     * unqueInstance, 从而节约资源
     *
     * 这个实现在多线程环境下是不安全的，如果多个线程能够同时进入 if(uniqueInstance == null),并且此时uniqueInstance
     * 为 null，那么会有多个线程执行uniqueInstance - new lazySingleton();语句，这将导致多次实例化unqueInstance.
     */

    private static Singleton1_Lazy unquiqueInstance = null;

    private Singleton1_Lazy() {
    }

    public static Singleton1_Lazy getUnquiqueInstance() {
        if (unquiqueInstance == null)
            unquiqueInstance = new Singleton1_Lazy();
        return unquiqueInstance;
    }
}
